<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd"><html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <title>Example: Handling Menu Click Events (YUI Library)</title>

                <!-- Standard reset and fonts -->

        <link rel="stylesheet" type="text/css" href="../../build/reset/reset.css">
        <link rel="stylesheet" type="text/css" href="../../build/fonts/fonts.css">

            

        <!-- Logger CSS -->

        <link rel="stylesheet" type="text/css" href="../../build/logger/assets/logger.css">

         

        <!-- CSS for Menu -->

        <link rel="stylesheet" type="text/css" href="../../build/menu/assets/menu.css">
 

        <!-- Page-specific styles -->

        <style type="text/css">

            body { margin:.5em; }

            h1 { font-weight:bold; }

            #logs {

                position:absolute;
                bottom:0;
                right:0;
            
            }

            .example9 {

                background-color:#9c9;
            
            }

            p#clicknote {

                margin-top:1em;

            }

            p#clicknote em {
            
                font-weight:bold;
            
            }

        </style>

                <!-- Namespace source file -->

        <script type="text/javascript" src="../../build/yahoo/yahoo.js"></script>

        <!-- Dependency source files -->

        <script type="text/javascript" src="../../build/event/event.js"></script>
        <script type="text/javascript" src="../../build/dom/dom.js"></script>

            

        <!-- Logger source file -->

        <script type="text/javascript" src="../../build/logger/logger.js"></script>

        
        <!-- Container source file -->
        <script type="text/javascript" src="../../build/container/container_core.js"></script>

        <!-- Menu source file -->
        <script type="text/javascript" src="../../build/menu/menu.js"></script>

        <!-- Page-specific script -->

        <script type="text/javascript">

            YAHOO.example.onDOMReady = function(p_sType) {

                // "click" event handler for the menu

                function onMenuClick(p_sType, p_aArgs, p_oValue) {

                    this.show();

                }


                // "click" event handler for each menu item

                function onMenuItemClick(p_sType, p_aArgs, p_oValue) {

                    YAHOO.log(
                        (
                            "index: " + this.index + 
                            ", text: " + this.cfg.getProperty("text") + 
                            ", value:" + p_oValue
                        ),
                        "info",
                        "example9"
                    );
                
                    this.parent.show();
                
                }


                var oMenu = new YAHOO.widget.Menu("mymenu");

                oMenu.addItems(
                    [
                        { text: "Item One", onclick: { fn:onMenuItemClick } },

                        /*
                             Register a "click" event handler for the first item, 
                             passing a string arguemnt ("foo") to the event handler.
                        */
                        { text: "Item Two", onclick: { fn:onMenuItemClick, obj:"foo" } },


                        /*
                             Register a "click" event handler for the third item and
                             passing and array as an argument to the event handler.
                        */
                        { text: "Item Three", onclick: { fn:onMenuItemClick, obj: ["foo", "bar"] } },
                    ]
                );

                oMenu.clickEvent.subscribe(onMenuClick, oMenu, true);

                oMenu.render(document.body);

                oMenu.showEvent.subscribe(function() {

                    this.focus();
                
                });

                oMenu.show();


                var oLogs = document.createElement("div");
                oLogs.id = "logs";
                
                document.body.appendChild(oLogs);

                var oLogReader = new YAHOO.widget.LogReader("logs");

                YAHOO.util.Event.addListener("menutoggle", "click", oMenu.show, null, oMenu);
                

                /*
                     Add a "mousedown" event handler to prevent the menu from 
                     hiding when the user mouses down on the logger.
                */

                function onLogsMouseDown(p_oEvent) {

                    YAHOO.util.Event.stopPropagation(p_oEvent);

                }

                YAHOO.util.Event.addListener("logs", "mousedown", onLogsMouseDown);

            };


            YAHOO.util.Event.onDOMReady(YAHOO.example.onDOMReady);
            
        </script>

    </head>
    <body>

        <h1>Example: Handling Menu Click Events (YUI Library) <em>[<a href="index.html">Examples Home</a>]</em></h1>
        <p>This example demonstrates how to register a "click" event handler for a MenuItem instance.  All of the events for YUI Menu are instances of <a href="http://developer.yahoo.com/yui/event/#customevent">YAHOO.util.CustomEvent</a>.  To register a listener for an event, use the event's "subscribe" method passing a pointer to your handler as the first argument.  You can pass an argument to your event handler(s) as an additional second argument to the "subscribe" method.</p>
        <p id="clicknote"><em>Note:</em> By default clicking outside of a menu will hide it.  Additionally, menu items without a submenu or a URL to navigate will hide their parent menu when clicked.  Click the "Show Menu" button below to make the menu visible if it is hidden.</p>
        <button id="menutoggle">Show Menu</button>

    </body>
</html>